package com.djt.book_system.service.impl;

import com.djt.book_system.entity.Borrows;
import com.djt.book_system.dao.BorrowsDao;
import com.djt.book_system.entity.BorrowsInfo;
import com.djt.book_system.service.BorrowsService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * (Borrows)表服务实现类
 *
 * @author makejava
 * @since 2021-05-19 10:48:10
 */
@Service("borrowsService")
public class BorrowsServiceImpl implements BorrowsService {
    @Resource
    private BorrowsDao borrowsDao;

    /**
     * 通过ID查询单条数据
     *
     * @param boid 主键
     * @return 实例对象
     */
    @Override
    public Borrows queryById(Integer boid) {
        return this.borrowsDao.queryById(boid);
    }

    @Override
    public int borrowCountById(int bid) {
        return borrowsDao.borrowCountById(bid);
    }

    /**
     * 查询多条数据
     *
     * @param offset 查询起始位置
     * @param limit  查询条数
     * @return 对象列表
     */
    @Override
    public List<Borrows> queryAllByLimit(int offset, int limit) {
        return this.borrowsDao.queryAllByLimit(offset, limit);
    }

    /**
     * 分页查询所有书籍借阅信息
     *
     * @param offset 每页起始位置
     * @param limit 每页记录条数
     * @return
     */
    @Override
    public List<BorrowsInfo> queryBorrowsInfo (int offset , int limit , BorrowsInfo conditional){
        return borrowsDao.queryBorrowsInfo(offset,limit,conditional);
    }

    /**
     * 通过借阅记录主键归还图书
     *
     * @param boid 借书记录主键
     */
    @Override
    public void back(int boid) {
        borrowsDao.back(boid);
    }

    /**
     * 归还图书后该图书剩余数量+1
     *
     * @param bid 图书主键
     */
    @Override
    public void backbook(int bid) {
        borrowsDao.backbook(bid);
    }

    /**
     * 查询所有数据条数
     *
     * @return
     */
    @Override
    public int borrowsCount(BorrowsInfo conditional) {
        return borrowsDao.borrowsCount(conditional);
    }

    /**
     * 新增数据
     *
     * @param borrows 实例对象
     * @return 实例对象
     */
    @Override
    public Borrows insert(Borrows borrows) {
        this.borrowsDao.insert(borrows);
        return borrows;
    }

    /**
     * 修改数据
     *
     * @param borrows 实例对象
     * @return 实例对象
     */
    @Override
    public Borrows update(Borrows borrows) {
        this.borrowsDao.update(borrows);
        return this.queryById(borrows.getBoid());
    }

    /**
     * 借阅书籍
     *
     * @param bids 被借阅书籍主键
     */
    @Override
    public void borrows(int[] bids) {
        borrowsDao.borrows(bids);
    }

    /**
     * 通过主键删除数据
     *
     * @param boid 主键
     * @return 是否成功
     */
    @Override
    public boolean deleteById(Integer boid) {
        return this.borrowsDao.deleteById(boid) > 0;
    }
}
